package org.example;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public abstract class Father<T> {
    public Father() {
        Class<? extends Father> clazz = this.getClass();//得到子类的类型
        System.out.println("Father无参构造方法执行了-----注意这里的this是----" + this);
        Type type = clazz.getGenericSuperclass();//获取传递给父类参数化类型
        System.out.println("将type打印:" + type); //org.example.Father<java.lang.String>

        if (type instanceof ParameterizedType) {
            ParameterizedType pType = (ParameterizedType) type;//它就是A<String>
            Type[] types = pType.getActualTypeArguments();//它就是一个Class数组
            Class c = (Class) types[0];//它就是传递进来的泛型的Class
            System.out.println("获取到的泛型类型是:" + c);
        } else {
            System.out.println("没有给父类中传递泛型");
        }
    }
}
